﻿using System;

namespace SmartPlant.Updater
{
    /// <summary>
    /// 提供一种在会话之间存储AutoUpdater状态的机制。
    /// </summary>
    public interface IPersistenceProvider
    {
        /// <summary>
        /// 读取指示是否应跳过特定版本的标志。
        /// </summary>
        /// <returns>返回要跳过的版本。如果跳过值为false或不存在，那么它将返回null。</returns>
        Version GetSkippedVersion();

        /// <summary>
        /// 读取包含日期和时间的值，此时必须再次向用户提供升级应用程序的可能性。
        /// </summary>
        /// <returns>返回一个<see cref="DateTime"/>值，在该值时，必须再次为用户提供升级应用程序的可能性。如果以后提醒值不存在，那么它将返回null。</returns>
        DateTime? GetRemindLater();

        /// <summary>
        /// 设置指示AutoUpdater必须忽略的特定版本的值。
        /// </summary>
        /// <param name="version">必须忽略的特定版本的版本代码。如果您不想跳过任何版本，请将其设置为null。</param>
        void SetSkippedVersion(Version version);

        /// <summary>
        /// 设置必须再次为用户提供升级应用程序的可能性的日期和时间。
        /// </summary>
        /// <param name="remindLaterAt">必须再次向用户提供升级应用程序的可能性的日期和时间。</param>
        void SetRemindLater(DateTime? remindLaterAt);
    }
}